package org.example.eatback.controller;

import org.example.eatback.pojo.User;
import org.example.eatback.result.Result;
import org.example.eatback.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
@CrossOrigin //解决跨域问题
public class UserController {
    //注入userService
    @Autowired
    private UserService userService;

    /**
     * 用户注册接口
     * @param user 包含用户名和密码的用户对象，通过RequestBody接收前端传来的JSON数据
     * @return 返回注册结果，如果用户名不存在，则返回注册成功结果；否则返回错误信息
     * 对参数没有进行验证，仅用于演示
     */
    @PostMapping("/register")
    public Result register (@RequestBody User user) {
        String username = user.getUsername();
        String psw = user.getPassword();
        User byuser =  userService.findByUser(username);
        //查询数据库判断该用户是否存在
        if (byuser == null){
            //不存在则注册成功，将用户名和密码添加到数据库中
            userService.register(username,psw);
            return Result.success("注册成功！");
        }
        return Result.error("用户名已被占用！");
    }

    /**
     * 用户登录接口
     * @param user 包含用户名和密码的用户对象，通过RequestBody接收前端传来的JSON数据
     * @return 返回登录结果，如果用户名正确且密码匹配，则返回登录成功结果；否则返回错误信息
     */
    // 修改登录接口，返回更多信息
    @PostMapping("/login")
    public Result login(@RequestBody User user) {
        String username = user.getUsername();
        String password = user.getPassword();
        User byUser = userService.findByUser(username);

        if (byUser == null) {
            return Result.error("用户名错误");
        }

        if (password.equals(byUser.getPassword())) {
            // 登录成功时返回用户基本信息
            return Result.success(byUser);
        }

        return Result.error("密码错误！");
    }

    // 获取用户详细信息的接口
    @PostMapping("/info")
    public Result getUserInfo(@RequestBody UserInfoRequest request) {
        try {
            User userInfo = userService.getUserInfo(request.getUsername());
            if (userInfo != null) {
                return Result.success(userInfo);
            } else {
                return Result.error("用户不存在");
            }
        } catch (Exception e) {
            return Result.error("获取用户信息失败：" + e.getMessage());
        }
    }

    @PostMapping("/update")
    public boolean updateUserInfo(@RequestBody User user) {
        try {
            userService.updateUserInfo(user);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }


}

// 用户信息请求参数类
class UserInfoRequest {
    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
    // 请求参数类

}
